/**********************************************************************************************************************
 * @file    firmware.h
 *
 * Copyright (C) 2019 Queclink Wireless Solutions (ShenZhen) Co., Ltd. All Rights Reserved.
 *
 * @attention
 *
 * @usage
 *
 *********************************************************************************************************************/
#ifndef __FIRMWARE_H
#define __FIRMWARE_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

#pragma pack(1)
typedef struct {
    uint8_t flag[4];            //文件有效标识符，固定为"SWSD”
    uint16_t crc16_1;           //文件信息校验码（CRC16，文件信息中除去有效标识符"SWSD"以及文件信息校验码以外所有字段的校验。
    uint16_t crc16_2;           //文件数据校验码（CRC16）
    uint32_t timestamp;         //生成时间
    uint32_t file_size;         //文件大小
    uint16_t file_type;         //文件类型
    uint8_t reserve[14];        //保留字段
    uint8_t version[32];        //固件版本
} firmware_head_t;
#pragma pack()

#define FIRMWARE_FLAG_STR   "SWSD"

#define FIRMWARE_TYPE_DIS   0x1A01
#define FIRMWARE_TYPE_IOT   0x2A01
#define FIRMWARE_TYPE_BLE   0x3A01
#define FIRMWARE_TYPE_DAT   0x4A01
#define FIRMWARE_TYPE_AUD   0x5000
#define FIRMWARE_TYPE_BMS   0x6A01
#define FIRMWARE_TYPE_ECU   0x6A02

#ifdef __cplusplus
}
#endif

#endif /* __FIRMWARE_H */
